obj.getpoint("index")
現在が何番目の区間なのか、区間の中でどの割合にいるのかを実数で返す。
使用例
code:Lua
local index=obj.getpoint("index")
local sec_i,sec_t=math.modf(index) -- 実数を整数部と小数部に分ける関数
local st,ed=obj.getpoint(sec_i),obj.getpoint(sec_i+1) -- 区間の始点と終点の値を取得する
return st+(ed-st)*sec_t -- a+(b-a)*t で aからbまで割合tまで進む(lerp)になる
Tips
トラックバースクリプト以外でこの関数を使いたいことがありますが、適切にobj.getvalueを使うことで代替できます。 code:Lua
local function get_section_index()
local function getst(i)return obj.getvalue("time",0,i)end
local time=obj.time
local n=obj.getoption"section_num"
local L,R=0,n+1
while(R-L>1)do
local m=math.floor((L+R)*.5)
if(getst(m)<=time)then L=m else R=m end
end
if(L==n)then return n end
local Lt=getst(L)
return L+(time-Lt)/(getst(R)-Lt)
end